1월 실천 성적표
드디어 2019년도! 나의 실천 1월 첫 성적표이다. 깃텁 TIL 에서 작성한 하루 해야 할 체크리스트 수행 함에 따라 하루 점수를 매겨 100점 만점으로 환산하여 나타낸것이다. (Github에 contribution을 따라해봤다.)
일단 위 색깔 음영과 같이 대부분 해야할 것을 미루지 않고 실천하였다. 정말 하기 싫은날에도 타협하지 않고 조금이라도 하자 라는 마음에 책상에 앉아 할 일을 하였고 그렇게 하루하루 하다보니 몸이 실천하고 행동하는데 익숙해져 큰 어려움이 없는것 같았다.
나의 실천 프레임워크
Notion 메모앱을 활용한 나의 1월달 실천 프레임워크이다! 1일부터 31일까지 빠짐없이 할 일을 적고 체크해 나갔다. 동기부여도 되고 실천도 잘되고 계속 활용 해야 겠다.
이제, 1월달에 어떤것을 했는지 그리고 보안할 점은 무엇인지 한 번 회고해 보겠다.
영어공부
올해 목표중에 비중 있는 것중에 하나이다.
영문 레퍼런스 문서를 읽을때나 세미나, 컨퍼런스, 각종 프로그래밍 관련 영어 컨텐츠를 잘 이해하고 응용하고 싶은 강한 마음과 살면서 제 2외국어 하나 정해서 유창하게 말해보고 싶은 마음에 올해 큰 목표중에 하나로 정하였다.
출,퇴근 하면서 프로그래밍 관련 영어 유트브를 영어자막으로 만들고 동영상을 추출하여 폰에 넣고 수시로 듣고 shadowing을 하였고 집에서는 dictation 하였다.
1달간 정말 빠짐없이 계속 듣다보니 들리기는 잘 들리는거 같다. 아직 멀었지만 발음과 리듬 연음도 정리해가면서 차곡차곡 영어를 체화시키려고 노력하고 있다.
좀 더 보안할게 있다면
- 평소 개발 뉴스를 영어 뉴스로 봐보는 습관을 가지자는 것이다. InfoQ 라는 개발 뉴스 사이트를 알게 됬는데 이 사이트를 이용하면 좋을 것 같다.
- 평소 내말에 귀를 귀울여 내가 자주 사용하는 문장을 영어로 바꿔보는 것이다.
- dictation 투자를 더 늘려야 한다.
- commit message 영어로 작성하기
영알남
“영어 알려주는 남자” 유트브 구독중인데 영어 공부하고 있는 나로써 정말 도움이 많이 되고 있다.
단어, 전치사 등 학교 다닐때 뜻만 외웠지 문맥이나 상황에 따른 느낌은 없어 해석이나 의미전달이 왜 안됬는지 깨닳았기 때문이다. 실제 듣기, 읽기 할 때 상당히 도움이 되고 있다. 반복해서 꾸준히 들을 예정이다.
코드 깔끔하게 그리고 보기좋게 작성하기 - Design patterns & Refactoring
다른 여러 기술들 Docker, JPA, node.js, MSA, NoSQL, SPA 등 해보고 싶은게 많았지만!! 지금. 내가. 하고. 있는. 업무. 를 더 잘하기 위해서 생각하는 질문에 답이 먼저라고 판단하였고 그 답이 바로 코드를 깔끔하고 다른 사람이 봤을때 이해하기 쉽게 작성하는 것 이었다. 항상 더 좋은 방법이 없을까? 고민하는 나의 습관이 더 좋은 방법이 녹아들어간 코드를 만들고 더 깔끔해 졌을때 기분은 정말 많이 느꼈던 1월이었다.
실제 업무에 desigin patterns과 refactoring을 실천 하여 추후 기능을 추가 할 때도 중복을 최소화 할 수 있었고 다시한번 desigin pattern이 왜 필요하고 refacotring에 중요성을 알게 되었다.
내가 실제 사용한 desigin patterns과 refactoring을 github에 잘 정리하였는데 계속 내용을 추가 업데이트하여 실무에 잘 활용 해야 겠다.
- Factory Method Pattern
- Template Method Pattern
- 그 밖에 Builder Pattern, Observer Pattern을 활용하였는데 추후 정리하여 Commit 할 예정이다.
TDD 실천
TDD라고 하면 포괄적이고 거창할수 있지만, 정확히 말하면 개발 하면서 Junit을 통해 단위 테스트를 즉각 하여 피드백을 빨리 받고 좀 더 버그가 최소화 하여 개발 하는 벙법을 적용 했다는 것이다.
이러한 경험은 정말 값진 경험이었다. 이러한 방식으로 개발 하게 되면 상대적으로 심리적 안정이 있다. 내가 product 코드를 수정하더라도 내가 작성한 테스트 케이스가 있기 때문에 즉각 오류 및 버그를 알려줘 쉽게 문제를 해결 할 수 도 있고, maven을 통해 deploy 할 때도 작성한 테스트 코드를 수행하여 코드 검사도 해주기 때문에 뒤늦게 발생할 오류를 최대한 빨리 감지 할 수 있다는게 큰장점이라 생각한다.
OS 공부
소프트웨어 개발자로써 컴퓨터 공학에 대한 기초 지식을 탄탄히 하는것이 다른 신기술을 배우는 것보다 더 중요하다고 생각하여 마찬가지로 비중있게 공부하고 있다. 패스트 캠퍼스 올인원 패키지를 수강하면서 내용을 체화시고 있는데 잘한 선택인거 같다. 책으로만 보면 어려운 내용이지만 역시 쉽게 설명해주어 그나마 이해를 하면서 진도를 밟아가고 있다.
OS파트를 1월에 다 정리하는게 목표였는데 2월까지는 해야 할 것같다. 진도율은 80%정도 됬지만 한번더 반복해서 들을 예정이다. OS내용을 접하면서 왜 개발자가 OS를 알아햐는지 절실히 깨닳았다.
왜냐하면, OS를 구현/운영 하기 위해서 적용되는 알고리즘, 자료구조가 개발하면서 도움이 많이 되기 때문이다. 이또한 실무에서 경험 할 수 있었는데 멀티스레드 환경에서 개발하고 있었는데 thread safe 하지 않고 간섭이 발생하였기 때문이었다. 나는 여기서 OS 프로세스 파트에서 뮤텍스와 세마포어 개념이 생각이 나서 스레드간 간섭이 생기지 않게 코드로 구현하여 실제 테스트 통과후 운영에 적용하였다. 후에 @disallowconcurrentexecution 어노테이션으로 방지 할 수있다는 것을 깨닳았지만 그래도 개념을 코드로 구현하여 현상을 해결한것은 내게 정말 값진 경험이었다.
2월 달에도 내것으로 다 만들겠다는 각오로 OS를 꾸준히 공부할 것이다. 그 다음은 컴퓨터 구조이다!
2월달은?
- 하루 실천 체크리스틀 좀 더 구체화 하자
- OS 완강 및 내용 정리 확실히 해 놓자
- 자료구조 및 알고리즘 공부시간을 늘리고 더 꾸준히 공부하자